5.20. Первая программа
Первая программа
Установка Zig
Zig распространяется в виде готовых двоичных сборок для всех основных операционных систем: Windows, macOS и Linux. Установка не требует сложных зависимостей и занимает несколько минут.
На Windows
- Перейдите на официальный сайт Zig: https://ziglang.org/download/
- В разделе Windows скачайте архив с последней стабильной версией (обычно файл с расширением
.zip). - Распакуйте архив в удобное место, например, в папку
C:\zig. - Добавьте путь к папке
zigв переменную окруженияPATH. Это позволит запускать командуzigиз любого места в терминале.- Нажмите
Win + R, введитеsysdm.cpl, откройте вкладку Дополнительно, затем нажмите Переменные среды. - В разделе Системные переменные найдите
Path, нажмите Изменить, затем Создать и укажите путь, например:C:\zig.
- Нажмите
- Откройте новое окно терминала (PowerShell или Command Prompt) и введите:
Если команда возвращает номер версии, например
zig version0.13.0, установка прошла успешно.
На macOS
Если у вас установлен менеджер пакетов Homebrew, выполните:
brew install zig
Если вы предпочитаете установку вручную:
- Скачайте архив для macOS с официального сайта.
- Распакуйте его, например, в папку
~/Applications/zig. - Добавьте путь в
PATH. Для этого откройте файл~/.zshrc(или~/.bashrc, если используется bash) и добавьте строку:export PATH="$PATH:$HOME/Applications/zig" - Перезагрузите оболочку или выполните:
source ~/.zshrc - Проверьте установку командой
zig version.
На Linux
Для большинства дистрибутивов рекомендуется использовать официальные сборки с сайта, так как версии в репозиториях часто устаревают.
- Скачайте архив, соответствующий вашей архитектуре (обычно
x86_64-linux). - Распакуйте его, например, в
/opt/zig:sudo tar -xzf zig-linux-x86_64-*.tar.xz -C /opt
sudo mv /opt/zig-linux-x86_64-* /opt/zig - Добавьте путь в
PATH. Откройте~/.bashrcили~/.profileи добавьте:export PATH="$PATH:/opt/zig" - Примените изменения:
source ~/.bashrc - Проверьте установку:
zig version
Выбор среды разработки
Zig не требует специальной интегрированной среды разработки (IDE). Достаточно любого текстового редактора с поддержкой синтаксиса Zig. Однако для удобства можно использовать следующие варианты:
- Visual Studio Code — самый популярный выбор. Установите расширение Zig Language Support от автора tiehuis. Оно предоставляет подсветку синтаксиса, автодополнение, навигацию по коду и интеграцию с компилятором.
- Vim / Neovim — с плагином
zig.vimили через LSP-клиент (например,nvim-lspconfigс серверомzls). - Emacs — с пакетом
zig-mode. - JetBrains Rider или CLion — поддерживают Zig через плагины, но требуют дополнительной настройки.
Для первой программы подойдёт даже Блокнот, но использование редактора с подсветкой синтаксиса значительно упрощает чтение и отладку кода.
Создание первой программы
Откройте терминал и создайте новую директорию для проекта:
mkdir hello-zig
cd hello-zig
Внутри этой папки создайте файл с именем main.zig. Имя файла может быть любым, но по соглашению точка входа в программу часто называется main.zig.
Откройте файл в выбранном редакторе и введите следующий код:
const std = @import("std");
pub fn main() void {
std.debug.print("Hello, World!\n", .{});
}
Разберём каждую строку подробно.
Строка 1: импорт стандартной библиотеки
const std = @import("std");
Ключевое слово const объявляет неизменяемую переменную. Здесь переменной std присваивается результат вызова встроенной функции @import("std"). Эта функция загружает модуль стандартной библиотеки Zig, которая содержит базовые инструменты: работу с памятью, вводом-выводом, строками, потоками и многое другое. Стандартная библиотека в Zig — это не внешняя зависимость, а часть самого языка, встроенная в компилятор.
Строка 3: определение функции main
pub fn main() void {
Функция main — это точка входа в программу. Ключевое слово pub означает, что функция видна за пределами текущего модуля (это необходимо, чтобы система запуска могла её вызвать). Слово fn объявляет функцию. После имени main в скобках указываются параметры — в данном случае их нет. Тип возврата указан как void, что означает: функция ничего не возвращает.
Строка 4: вывод текста
std.debug.print("Hello, World!\n", .{});
Вызов std.debug.print отправляет текст в стандартный поток вывода (обычно консоль). Первый аргумент — строковый литерал "Hello, World!\n". Символ \n в конце обеспечивает переход на новую строку после вывода. Второй аргумент — это кортеж (tuple), обозначенный как .{}. В Zig форматирование строки выполняется через заполнители, такие как {}. В данном случае строка не содержит заполнителей, поэтому передаётся пустой кортеж.
Важно: std.debug.print предназначен для отладки и работает даже в режимах, где другие функции ввода-вывода могут быть отключены. Для полноценного вывода в конечных приложениях рекомендуется использовать std.io.getStdOut().writer().
Компиляция и запуск
Вернитесь в терминал, находясь в папке hello-zig, и выполните:
zig run main.zig
Команда zig run компилирует файл и сразу запускает полученный исполняемый файл. В консоли появится:
Hello, World!
Это означает, что программа успешно выполнена.
Если вы хотите получить отдельный исполняемый файл, используйте:
zig build-exe main.zig
На выходе будет создан файл main (в Linux/macOS) или main.exe (в Windows). Его можно запустить напрямую:
./main # Linux/macOS
main.exe # Windows
По умолчанию Zig компилирует в режиме отладки (Debug), который включает проверки границ массивов, переполнения и другие средства безопасности. Для выпуска производственной версии используйте флаг:
zig build-exe -O ReleaseFast main.zig
Флаг -O ReleaseFast отключает отладочные проверки и включает оптимизации, что делает программу быстрее и меньше по размеру.